package examination;

import org.junit.Test;

/**
 * Created by Administrator on 2018/9/15.
 * 猴子第一天摘了若干个桃子，当即吃了一半，还不解馋，又多吃了一个；
 * 第二天，吃剩下的桃子的一半，还不过瘾，又多吃了一个；
 * 以后每天都吃前一天剩下的一半多一个，到第10天想再吃时，只剩下2个桃子了。
 * 问输入day天没吃桃子前手上有多少桃子
 * 第1天没吃桃子前手上有2046个桃子
 * 第2天没吃桃子前手上有1022个桃子
 * ...
 * 第9天没吃桃子前手上有6个桃子
 * 第10天没吃桃子前手上有2个桃子
 */
public class Monkey {
    /*第一种方法 递归法，总结出Sn = 2 ( Sn+1 + 1) ,初始值第10天剩余为2 */
    int shareWay1(int day){
        if (day == 10)
            return 2;
        else
            return 2 * shareWay1(day + 1) + 2;
    }

    /*第二种方法 while循环法，day=10，默认为2，当day<10时，循环计算ret = (remain + 1) *2;值*/
    int shareWay2(int day){
        int ret = 2;
        int remain =2;
        day = 10 - day;
        while (day > 0){
            ret = (remain + 1) *2;
            remain = ret;
            day --;
        }
        return ret;
    }

    @Test
    public  void shareTest(){
        int number = shareWay2(9);
        System.out.println(number);
    }
}


